﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Sisco.AplicacionEscritorio.Util;

namespace Sisco.AplicacionEscritorio.Problema.Problema.ControlUsuario
{
    public partial class ProblemaSoftware : UserControl
    {
        private AccesoDatos.USUARIO usuarioLogueado;

        public ProblemaSoftware()
        {
            InitializeComponent();
        }

        public ProblemaSoftware(AccesoDatos.USUARIO uLogin) : this()
        {
            usuarioLogueado = uLogin;
        }

        private void ProblemaSoftware_Load(object sender, EventArgs e)
        {
            LogicaNegocio.UsuarioBLL usuarioBLL = new LogicaNegocio.UsuarioBLL();
            cmbAsistenteReparador.DataSource = usuarioBLL.ListarAsistenteReparador();
            cmbAsistenteReparador.ValueMember = "ID";
            cmbAsistenteReparador.DisplayMember = "NOMBRE";

            LogicaNegocio.CasoProblemaBLL casoproblemaBLL = new LogicaNegocio.CasoProblemaBLL();
            cmbCasoProblema.DataSource = casoproblemaBLL.ListarCasoSoftware();
            cmbCasoProblema.ValueMember = "ID";
            cmbCasoProblema.DisplayMember = "descripcion";
            cmbCasoProblema.SelectedIndex = -1;
        }

        private void btnBuscarUsuario_Click(object sender, EventArgs e)
        {
            FormularioBuscar cuadroBuscar = new FormularioBuscar("Usuario");
            cuadroBuscar.ShowDialog(this.Parent);

            AccesoDatos.USUARIO selectedUsuario = cuadroBuscar.ObjetoBuscado as AccesoDatos.USUARIO;

            if (selectedUsuario != null)
            {
                txtUsuarioNombre.Text = selectedUsuario.NOMBRES;
                txtUsuarioNombre.Tag = selectedUsuario.IDUSUARIO;

                LogicaNegocio.EquipoBLL equipoBLL = new LogicaNegocio.EquipoBLL();

                List<AccesoDatos.EQUIPO> listaEquipos = equipoBLL.ListarEquipo(selectedUsuario);

                if (listaEquipos.Count == 0)
                {
                    DialogResult respuesta = MessageBox.Show(this.Parent, "El usuario no tiene asignado equipos.\n¿Continúa con el registro del problema?", "Sisco", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);

                    if (respuesta == DialogResult.No)
                    {
                        //cierra el formulario
                        this.ParentForm.Close();
                    }
                }
                else
                {
                    //carga los equipos en la grilla
                    gridEquipos.DataSource = null;
                    gridEquipos.DataSource = listaEquipos;
                    gridEquipos.ClearSelection();
                }

                //txtRegistradoPor.Text = usuarioLogueado.NOMBRE.Trim();
                txtFechaRegistro.Text = DateTime.Now.ToShortDateString();
            }
        }

        private void gridEquipos_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            if (gridEquipos.DataSource != null)
            {
                gridEquipos.Columns["ID"].Visible = false;
                gridEquipos.Columns["IDUSUARIO"].Visible = false;
                gridEquipos.Columns["IDEQUIPO"].Visible = false;
                gridEquipos.Columns["IDTIPOEQUIPO"].Visible = false;                
                gridEquipos.Columns["TIPOEQUIPO"].Visible = false;
                gridEquipos.Columns["MARCA"].HeaderText = "Marca";
                gridEquipos.Columns["MODELO"].HeaderText = "Modelo";
                gridEquipos.Columns["MODELO"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                gridEquipos.Columns["SERIE"].HeaderText = "Serie";
                gridEquipos.Columns["SERIE"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;                
                gridEquipos.Columns["ELIMINADO"].Visible = false;
                gridEquipos.Columns["IDUSUARIOANTIGUO"].Visible = false;
                gridEquipos.Columns["ASIGNADO"].Visible = false;
                gridEquipos.Columns["FECHAREGISTRO"].Visible = false;
                gridEquipos.Columns["NOMBEQUIPO"].Visible = false;
                gridEquipos.Columns["FECHAMODIFICACION"].Visible = false;
                gridEquipos.Columns["TIPOEQUIPO1"].HeaderText = "Equipo";
                gridEquipos.Columns["TIPOEQUIPO1"].DisplayIndex = 0;
                gridEquipos.Columns["TIPOEQUIPO1"].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                gridEquipos.Columns["RELACION_EQUI_PROG"].Visible = false;
                gridEquipos.Columns["USUARIO"].Visible = false;
                gridEquipos.Columns["MOVIMIENTO"].Visible = false;
            }
        }

        private void gridEquipos_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (gridEquipos.Columns[e.ColumnIndex].Name == "TIPOEQUIPO1")
            {
                AccesoDatos.TIPOEQUIPO tipoEquipo = e.Value as AccesoDatos.TIPOEQUIPO;

                if (tipoEquipo != null)
                {
                    e.Value = tipoEquipo.NOMBRETIPO.Trim(); 
                }
            }
        }

        private void gridEquipos_SelectionChanged(object sender, EventArgs e)
        {
            if (gridEquipos.SelectedRows.Count > 0)
            {
                AccesoDatos.EQUIPO selectedEquipo = gridEquipos.SelectedRows[0].DataBoundItem as AccesoDatos.EQUIPO;

                LogicaNegocio.EquipoProgramaBLL equipoProgramaBLL = new LogicaNegocio.EquipoProgramaBLL();
                cmbPrograma.DataSource = equipoProgramaBLL.ListarProgramas(selectedEquipo);
                cmbPrograma.ValueMember = "ID";
                cmbPrograma.DisplayMember = "NOMBREPROGRAMA";
                cmbPrograma.SelectedIndex = -1;
            }
        }
    }
}
